package com.hamster.crmpre.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.hamster.crmpre.config.LoginInterceptor;
import com.hamster.crmpre.mapper.CustomerMapper;
import com.hamster.crmpre.mapper.MessageQuestionnaireMapper;
import com.hamster.crmpre.mapper.PersonalMessageMapper;
import com.hamster.crmpre.mapper.QuestionnairePreMapper;
import com.hamster.crmpre.pojo.Customer;
import com.hamster.crmpre.pojo.MessageQuestionnaire;
import com.hamster.crmpre.pojo.PersonalMessage;
import com.hamster.crmpre.pojo.QuestionnairePre;
import com.hamster.crmpre.pojo.dto.SendQuestionnaire;
import com.hamster.crmpre.service.PhoneUserService;
import com.hamster.crmpre.service.QuestionnairePreService;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

/**
 * @author Tarry
 * @create 2019/12/25 21:41
 */
@Service
public class QuestionnairePreServiceImpl implements QuestionnairePreService {
    @Autowired
    private QuestionnairePreMapper questionnairePreMapper;
    @Autowired
    private CustomerMapper customerMapper;
    @Autowired
    private PersonalMessageMapper personalMessageMapper;//消息中心
    @Autowired
    private MessageQuestionnaireMapper messageQuestionnaireMapper;//问卷消息详情
    @Autowired
    private PhoneUserService phoneUserService;
    /**
     * 查询系统已下发的问卷列表，问卷状态   0新建   1已下发  2已完成
     * @return
     */
    @Override
    public List<QuestionnairePre> listQuestionnaires() {
        QueryWrapper<QuestionnairePre> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("del","0").eq("state","1").orderByDesc("create_time");
        List<QuestionnairePre> questionnairePreList = questionnairePreMapper.selectList(queryWrapper);
        return questionnairePreList;
    }

    /**
     * 多个问卷，批量发送给手下的每个客户
     * @param ids
     * @return
     */
    @Transactional
    @Override
    public void sendQuestionnaire(List<String> ids) {
        //获得当前员工的id
        String userId = LoginInterceptor.getLoginUser().getUserId();
//        String userName = LoginInterceptor.getLoginUser().getName();
        String userName = phoneUserService.queryNameByPhone(LoginInterceptor.getLoginUser().getPhone());
        List<QuestionnairePre> questionnairePreList = questionnairePreMapper.selectBatchIds(ids);//这里没有顾虑del条件，因为列表中过滤了

        //问卷发送消息通知手下所有客户
        //查询手下所有客户
        QueryWrapper<Customer> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("principal_course_id",userId).or().eq("principal_vip_id",userId).or().eq("principal_company_id",userId);
        List<Customer> customerList = customerMapper.selectList(queryWrapper);//所有客户列表
        for (QuestionnairePre questionnairePre : questionnairePreList) {
            //批量发送给手下客户
            for (Customer customer : customerList) {
                //发送消息
                //1.详情表插入信息
                MessageQuestionnaire messageQuestionnaire = new MessageQuestionnaire();
                messageQuestionnaire.setContent(questionnairePre.getContent());
                messageQuestionnaire.setState("0"); //状态   0未提交  1已提交
                messageQuestionnaire.setCreateTime(questionnairePre.getCreateTime());
                messageQuestionnaire.setCustomerId(customer.getId());//客户id
                messageQuestionnaire.setCustomerName(customer.getName());//客户姓名
                messageQuestionnaire.setCustomerPhone(customer.getPhone());
                messageQuestionnaire.setDel("0");
                messageQuestionnaire.setEmployeeId(userId);//员工id
                messageQuestionnaire.setEmployeeName(userName);//员工姓名
                messageQuestionnaire.setOpinionaireId(questionnairePre.getId());//问卷id
                messageQuestionnaire.setTitle(questionnairePre.getTitle());//问卷标题

                messageQuestionnaireMapper.insert(messageQuestionnaire);//插入问卷详情表
                String id = messageQuestionnaire.getId();//插入后返回的id，插入到个人中心信息表
                //2.个人信息中心表插入信息
                PersonalMessage personalMessage = new PersonalMessage();
                personalMessage.setReceiverId(customer.getId());//接受者id
                personalMessage.setReceiverName(customer.getName());//接受者姓名
                personalMessage.setSenderId(userId);//发送者id
                personalMessage.setSenderName(userName);//发送者姓名
                personalMessage.setCreateTime(new Date());
                personalMessage.setState("0");//消息状态
                personalMessage.setMessageType("调查问卷");
                personalMessage.setMessageLink(id);//设置  详情表的id
                personalMessageMapper.insert(personalMessage);//插入 个人中心表
            }
        }

    }

    /**
     * 获取自己负责的客户的列表下拉框
     * @return
     */
    @Override
    public List<Customer> getCustomerList() {
       String userId = LoginInterceptor.getLoginUser().getUserId();
       QueryWrapper<Customer> queryWrapper = new QueryWrapper<>();
       queryWrapper.select("id","name");
       queryWrapper.or().eq("developer_id",userId).or().eq("principal_course_id",userId).or().eq("principal_vip_id",userId).or().eq("principal_company_id",userId);
       List<Customer> list = customerMapper.selectList(queryWrapper);
       return list;
    }

    /**
     * 发送指定问卷，给指定的客户
     * @param sendQuestionnaire
     */
    @Override
    public void sendQuestionnaire2(SendQuestionnaire sendQuestionnaire) {
        //获得当前员工的id
        String userId = LoginInterceptor.getLoginUser().getUserId();
        String userName = phoneUserService.queryNameByPhone(LoginInterceptor.getLoginUser().getPhone());
        //List<QuestionnairePre> questionnairePreList = questionnairePreMapper.selectBatchIds(ids);//这里没有顾虑del条件，因为列表中过滤了
        QuestionnairePre questionnairePre = questionnairePreMapper.selectById(sendQuestionnaire.getQuestionnaireId());
        //问卷发送消息通知指定客户
        List<String> ids = sendQuestionnaire.getCustomerList();
        List<Customer> customerList = customerMapper.selectBatchIds(ids);
        for (Customer customer : customerList) {
                //发送消息
                //1.详情表插入信息
                MessageQuestionnaire messageQuestionnaire = new MessageQuestionnaire();
                messageQuestionnaire.setContent(questionnairePre.getContent());
                messageQuestionnaire.setState("0"); //状态   0未提交  1已提交
                messageQuestionnaire.setCreateTime(questionnairePre.getCreateTime());
                messageQuestionnaire.setCustomerId(customer.getId());//客户id
                messageQuestionnaire.setCustomerName(customer.getName());//客户姓名
                messageQuestionnaire.setCustomerPhone(customer.getPhone());
                messageQuestionnaire.setDel("0");
                messageQuestionnaire.setEmployeeId(userId);//员工id
                messageQuestionnaire.setEmployeeName(userName);//员工姓名
                messageQuestionnaire.setOpinionaireId(questionnairePre.getId());//问卷id
                messageQuestionnaire.setTitle(questionnairePre.getTitle());//问卷标题

                messageQuestionnaireMapper.insert(messageQuestionnaire);//插入问卷详情表
                String id = messageQuestionnaire.getId();//插入后返回的id，插入到个人中心信息表
                //2.个人信息中心表插入信息
                PersonalMessage personalMessage = new PersonalMessage();
                personalMessage.setReceiverId(customer.getId());//接受者id
                personalMessage.setReceiverName(customer.getName());//接受者姓名
                personalMessage.setSenderId(userId);//发送者id
                personalMessage.setSenderName(userName);//发送者姓名
                personalMessage.setCreateTime(new Date());
                personalMessage.setState("0");//消息状态
                personalMessage.setMessageType("调查问卷");
                personalMessage.setMessageLink(id);//设置  详情表的id
                personalMessageMapper.insert(personalMessage);//插入 个人中心表
        }


    }

}
